Systems with multiple, independent disks that use more than one of the disks for storing redundant data are commonly referred to as RAID-6 systems, where RAID is an acronym for "redundant array of inexpensive or independent disks." In a system with "k" data disks and "e" redundant disks, the data recorded on the r redundant disks are produced by manipulating the data recorded on the k data disks. Typically, the data on the r redundant disks is the result of error correction encoding of the data on the k data disks.
The data on the k data disks is in the form of data code words that each include data symbols and associated error correction code (ECC) symbols. The ECC symbols are produced by encoding the data symbols in a conventional manner in accordance with an ECC. The sectors on the r redundant disks contain redundant codewords. The symbols is in these codewords are produced by encoding the corresponding symbols from each of the k data disks. The encoding can be thought of as encoding down a "column" of k corresponding symbols. To avoid confusion herein, the ECC used to encode the column of k symbols is referred to as the "column ECC." Typically, the column ECC is not the same as the ECC used to produce the data codewords for the k data disks.
The symbols stored on the r redundant disks are used to correct errors in the data codewords that cannot be corrected using the ECC symbols included therein. To correct an error, the system decodes the column that contains the erroneous data symbol in accordance with the column ECC.
To produce the data for the redundant disks, the system segments the data stored in the k corresponding sectors into m-bit symbols. The system then encodes the corresponding m-bit symbols from each of the k sectors in accordance with the column ECC, to produce r corresponding m-bit redundancy symbols. These r symbols are recorded, respectively, in the corresponding sector on each of the r redundant disks.
To minimize the time required to encode and decode the columns, the system designer would like to choose a symbol size, that is, a value for "m", that is relatively large. This reduces the number of column encoding/decoding operations required per sector. The encoding and decoding operations require a plurality of Galois Field multiplication operations. In the conventional systems, the complexity of the Galois Field multiplication operations increases significantly as the size of m increases. Further, each decoding operation includes determining the multiplicative inverses of elements of the Galois Field GF (2.sup.m). For large m, the operation of finding multiplicative inverses is time consuming and/or it may require a large, 2.sup.m -1 element, look-up table. Accordingly, the value of m is selected as a compromise between system complexity and overall time to encode/decode.
The tracks of multiple track tape systems may be used in the same way that the multiple disks are used in the RAID-6 systems. Thus, data code words are stored on k tracks and the associated redundancy symbols are stored on the remaining r tracks. The same encoding/decoding techniques that are used for the k+r disks are used for the k+r tracks. Accordingly, the same compromise is made in selecting the size of the m-bit symbols for the column encoding.